package com.edu.exam.enums.examination.security;

/**
 * 安全警报状态枚举
 *
 * 从SecurityAlert.AlertStatus迁移而来
 * 定义考试安全系统中警报的处理状态
 *
 * @author System
 * @version 1.0.0
 */
public enum SecurityAlertStatus {

    /**
     * 新创建 - 警报刚创建，尚未处理
     */
    OPEN("OPEN", "开放中"),

    /**
     * 新创建 - 警报刚创建，尚未处理
     */
    NEW("NEW", "新创建"),

    /**
     * 确认中 - 警报已被确认，正在处理
     */
    CONFIRMING("CONFIRMING", "确认中"),

    /**
     * 已确认 - 警报已被确认，等待处理
     */
    CONFIRMED("CONFIRMED", "已确认"),

    /**
     * 处理中 - 警报正在被处理
     */
    PROCESSING("PROCESSING", "处理中"),

    /**
     * 已解决 - 警报已被成功处理并解决
     */
    RESOLVED("RESOLVED", "已解决"),

    /**
     * 已忽略 - 警报被确认为误报或不重要，已忽略
     */
    IGNORED("IGNORED", "已忽略"),

    /**
     * 已关闭 - 警报处理流程已关闭，但可能未完全解决
     */
    CLOSED("CLOSED", "已关闭"),

    /**
     * 已升级 - 警报已升级到更高级别处理
     */
    ESCALATED("ESCALATED", "已升级");

    private final String code;
    private final String description;

    SecurityAlertStatus(String code, String description) {
        this.code = code;
        this.description = description;
    }

    public String getCode() {
        return code;
    }

    public String getDescription() {
        return description;
    }

    /**
     * 根据编码获取对应的枚举
     *
     * @param code 编码
     * @return 对应的枚举
     */
    public static SecurityAlertStatus fromCode(String code) {
        for (SecurityAlertStatus status : values()) {
            if (status.getCode().equals(code)) {
                return status;
            }
        }
        throw new IllegalArgumentException("Unknown security alert status code: " + code);
    }

    /**
     * 根据描述获取对应的枚举
     *
     * @param description 描述
     * @return 对应的枚举
     */
    @Override
    public String toString() {
        return description;
    }
}